package com.small.sentinel.node;

public interface Node {

    /**
     * 添加线程数
     */
    void increaseThreadNum();

    /**
     * 减少线程数
     */
    void decreaseThreadNum();

    /**
     * 当前线程数
     * @return
     */
    int curThreadNum();

    /**
     * 添加通过数量
     * @param count
     */
    void addPassRequest(int count);

    /**
     * 通过的qps
     * @return
     */
    double passQps();


    /**
     * 上个窗口通过的qps
     * @return
     */
    double previousPassQps();

    /**
     * 添加平均用时成功数
     * @param rt
     * @param batchCount
     */
    void addRtAndSuccess(long rt, int batchCount);

    /**
     * 添加业务异常数
     * @param batchCount
     */
    void increaseExceptionQps(int batchCount);

    /**
     * 添加限流异常数
     * @param count
     */
    void increaseBlockQps(int count);
}
